home *** CD-ROM | disk | FTP | other *** search
/ io Programmo 60 / IOPROG_60.ISO / soft / c++ / gsl-1.1.1-setup.exe / {app} / src / cblas / test_hbmv.c < prev    next >
Encoding:
C/C++ Source or Header  |  2002-04-18  |  14.4 KB  |  412 lines

  1. #include <gsl/gsl_test.h>
  2. #include <gsl/gsl_ieee_utils.h>
  3. #include <gsl/gsl_math.h>
  4. #include <gsl/gsl_cblas.h>
  5.  
  6. #include "tests.h"
  7.  
  8. void
  9. test_hbmv (void) {
  10. const double flteps = 1e-4, dbleps = 1e-6;
  11.   {
  12.    int order = 101;
  13.    int uplo = 121;
  14.    float alpha[2] = {0.0f, 1.0f};
  15.    float beta[2] = {-0.3f, 0.1f};
  16.    int N = 3;
  17.    int k = 1;
  18.    int lda = 3;
  19.    float A[] = { 0.937f, -0.035f, 0.339f, 0.847f, 0.022f, 0.153f, -0.785f, 0.193f, -0.731f, -0.166f, -0.243f, -0.319f, 0.173f, -0.24f, 0.079f, -0.058f, 0.124f, 0.445f };
  20.    float X[] = { -0.093f, -0.103f, -0.537f, -0.151f, 0.094f, 0.954f };
  21.    int incX = -1;
  22.    float Y[] = { 0.029f, -0.391f, -0.256f, 0.031f, -0.478f, 0.098f };
  23.    int incY = -1;
  24.    float y_expected[] = { 0.02698f, 0.521724f, -0.379354f, 1.27743f, -0.25427f, -0.043268f };
  25.    cblas_chbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY);
  26.    {
  27.      int i;
  28.      for (i = 0; i < 3; i++) {
  29.        gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "chbmv(case 1086) real");
  30.        gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "chbmv(case 1086) imag");
  31.      };
  32.    };
  33.   };
  34.  
  35.  
  36.   {
  37.    int order = 101;
  38.    int uplo = 121;
  39.    float alpha[2] = {0.0f, 1.0f};
  40.    float beta[2] = {-0.3f, 0.1f};
  41.    int N = 3;
  42.    int k = 1;
  43.    int lda = 3;
  44.    float A[] = { 0.937f, -0.035f, 0.339f, 0.847f, 0.022f, 0.153f, -0.785f, 0.193f, -0.731f, -0.166f, -0.243f, -0.319f, 0.173f, -0.24f, 0.079f, -0.058f, 0.124f, 0.445f };
  45.    float X[] = { -0.093f, -0.103f, -0.537f, -0.151f, 0.094f, 0.954f };
  46.    int incX = -1;
  47.    float Y[] = { 0.029f, -0.391f, -0.256f, 0.031f, -0.478f, 0.098f };
  48.    int incY = -1;
  49.    float y_expected[] = { 0.02698f, 0.521724f, -0.379354f, 1.27743f, -0.25427f, -0.043268f };
  50.    cblas_chbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY);
  51.    {
  52.      int i;
  53.      for (i = 0; i < 3; i++) {
  54.        gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "chbmv(case 1087) real");
  55.        gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "chbmv(case 1087) imag");
  56.      };
  57.    };
  58.   };
  59.  
  60.  
  61.   {
  62.    int order = 101;
  63.    int uplo = 122;
  64.    float alpha[2] = {0.0f, 1.0f};
  65.    float beta[2] = {-0.3f, 0.1f};
  66.    int N = 3;
  67.    int k = 1;
  68.    int lda = 3;
  69.    float A[] = { 0.937f, -0.035f, 0.339f, 0.847f, 0.022f, 0.153f, -0.785f, 0.193f, -0.731f, -0.166f, -0.243f, -0.319f, 0.173f, -0.24f, 0.079f, -0.058f, 0.124f, 0.445f };
  70.    float X[] = { -0.093f, -0.103f, -0.537f, -0.151f, 0.094f, 0.954f };
  71.    int incX = -1;
  72.    float Y[] = { 0.029f, -0.391f, -0.256f, 0.031f, -0.478f, 0.098f };
  73.    int incY = -1;
  74.    float y_expected[] = { -0.06422f, -0.016288f, 0.734206f, 0.108366f, -0.411982f, 0.347068f };
  75.    cblas_chbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY);
  76.    {
  77.      int i;
  78.      for (i = 0; i < 3; i++) {
  79.        gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "chbmv(case 1088) real");
  80.        gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "chbmv(case 1088) imag");
  81.      };
  82.    };
  83.   };
  84.  
  85.  
  86.   {
  87.    int order = 101;
  88.    int uplo = 122;
  89.    float alpha[2] = {0.0f, 1.0f};
  90.    float beta[2] = {-0.3f, 0.1f};
  91.    int N = 3;
  92.    int k = 1;
  93.    int lda = 3;
  94.    float A[] = { 0.937f, -0.035f, 0.339f, 0.847f, 0.022f, 0.153f, -0.785f, 0.193f, -0.731f, -0.166f, -0.243f, -0.319f, 0.173f, -0.24f, 0.079f, -0.058f, 0.124f, 0.445f };
  95.    float X[] = { -0.093f, -0.103f, -0.537f, -0.151f, 0.094f, 0.954f };
  96.    int incX = -1;
  97.    float Y[] = { 0.029f, -0.391f, -0.256f, 0.031f, -0.478f, 0.098f };
  98.    int incY = -1;
  99.    float y_expected[] = { -0.06422f, -0.016288f, 0.734206f, 0.108366f, -0.411982f, 0.347068f };
  100.    cblas_chbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY);
  101.    {
  102.      int i;
  103.      for (i = 0; i < 3; i++) {
  104.        gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "chbmv(case 1089) real");
  105.        gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "chbmv(case 1089) imag");
  106.      };
  107.    };
  108.   };
  109.  
  110.  
  111.   {
  112.    int order = 102;
  113.    int uplo = 121;
  114.    float alpha[2] = {0.0f, 1.0f};
  115.    float beta[2] = {-0.3f, 0.1f};
  116.    int N = 3;
  117.    int k = 1;
  118.    int lda = 3;
  119.    float A[] = { 0.937f, -0.035f, 0.339f, 0.847f, 0.022f, 0.153f, -0.785f, 0.193f, -0.731f, -0.166f, -0.243f, -0.319f, 0.173f, -0.24f, 0.079f, -0.058f, 0.124f, 0.445f };
  120.    float X[] = { -0.093f, -0.103f, -0.537f, -0.151f, 0.094f, 0.954f };
  121.    int incX = -1;
  122.    float Y[] = { 0.029f, -0.391f, -0.256f, 0.031f, -0.478f, 0.098f };
  123.    int incY = -1;
  124.    float y_expected[] = { 0.19354f, 0.056192f, 0.72585f, 0.42717f, -0.2047f, 0.405354f };
  125.    cblas_chbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY);
  126.    {
  127.      int i;
  128.      for (i = 0; i < 3; i++) {
  129.        gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "chbmv(case 1090) real");
  130.        gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "chbmv(case 1090) imag");
  131.      };
  132.    };
  133.   };
  134.  
  135.  
  136.   {
  137.    int order = 102;
  138.    int uplo = 121;
  139.    float alpha[2] = {0.0f, 1.0f};
  140.    float beta[2] = {-0.3f, 0.1f};
  141.    int N = 3;
  142.    int k = 1;
  143.    int lda = 3;
  144.    float A[] = { 0.937f, -0.035f, 0.339f, 0.847f, 0.022f, 0.153f, -0.785f, 0.193f, -0.731f, -0.166f, -0.243f, -0.319f, 0.173f, -0.24f, 0.079f, -0.058f, 0.124f, 0.445f };
  145.    float X[] = { -0.093f, -0.103f, -0.537f, -0.151f, 0.094f, 0.954f };
  146.    int incX = -1;
  147.    float Y[] = { 0.029f, -0.391f, -0.256f, 0.031f, -0.478f, 0.098f };
  148.    int incY = -1;
  149.    float y_expected[] = { 0.19354f, 0.056192f, 0.72585f, 0.42717f, -0.2047f, 0.405354f };
  150.    cblas_chbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY);
  151.    {
  152.      int i;
  153.      for (i = 0; i < 3; i++) {
  154.        gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "chbmv(case 1091) real");
  155.        gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "chbmv(case 1091) imag");
  156.      };
  157.    };
  158.   };
  159.  
  160.  
  161.   {
  162.    int order = 102;
  163.    int uplo = 122;
  164.    float alpha[2] = {0.0f, 1.0f};
  165.    float beta[2] = {-0.3f, 0.1f};
  166.    int N = 3;
  167.    int k = 1;
  168.    int lda = 3;
  169.    float A[] = { 0.937f, -0.035f, 0.339f, 0.847f, 0.022f, 0.153f, -0.785f, 0.193f, -0.731f, -0.166f, -0.243f, -0.319f, 0.173f, -0.24f, 0.079f, -0.058f, 0.124f, 0.445f };
  170.    float X[] = { -0.093f, -0.103f, -0.537f, -0.151f, 0.094f, 0.954f };
  171.    int incX = -1;
  172.    float Y[] = { 0.029f, -0.391f, -0.256f, 0.031f, -0.478f, 0.098f };
  173.    int incY = -1;
  174.    float y_expected[] = { -0.151304f, 0.471592f, -0.507714f, -0.304446f, -1.16395f, -0.299062f };
  175.    cblas_chbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY);
  176.    {
  177.      int i;
  178.      for (i = 0; i < 3; i++) {
  179.        gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "chbmv(case 1092) real");
  180.        gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "chbmv(case 1092) imag");
  181.      };
  182.    };
  183.   };
  184.  
  185.  
  186.   {
  187.    int order = 102;
  188.    int uplo = 122;
  189.    float alpha[2] = {0.0f, 1.0f};
  190.    float beta[2] = {-0.3f, 0.1f};
  191.    int N = 3;
  192.    int k = 1;
  193.    int lda = 3;
  194.    float A[] = { 0.937f, -0.035f, 0.339f, 0.847f, 0.022f, 0.153f, -0.785f, 0.193f, -0.731f, -0.166f, -0.243f, -0.319f, 0.173f, -0.24f, 0.079f, -0.058f, 0.124f, 0.445f };
  195.    float X[] = { -0.093f, -0.103f, -0.537f, -0.151f, 0.094f, 0.954f };
  196.    int incX = -1;
  197.    float Y[] = { 0.029f, -0.391f, -0.256f, 0.031f, -0.478f, 0.098f };
  198.    int incY = -1;
  199.    float y_expected[] = { -0.151304f, 0.471592f, -0.507714f, -0.304446f, -1.16395f, -0.299062f };
  200.    cblas_chbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY);
  201.    {
  202.      int i;
  203.      for (i = 0; i < 3; i++) {
  204.        gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "chbmv(case 1093) real");
  205.        gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "chbmv(case 1093) imag");
  206.      };
  207.    };
  208.   };
  209.  
  210.  
  211.   {
  212.    int order = 101;
  213.    int uplo = 121;
  214.    double alpha[2] = {1, 0};
  215.    double beta[2] = {1, 0};
  216.    int N = 3;
  217.    int k = 1;
  218.    int lda = 3;
  219.    double A[] = { 0.662, 0.24, -0.311, -0.345, -0.782, 0.904, -0.842, 0.065, -0.168, -0.855, -0.692, 0.113, 0.009, -0.707, -0.981, 0.019, -0.687, 0.861 };
  220.    double X[] = { 0.873, -0.509, 0.398, 0.471, 0.214, 0.878 };
  221.    int incX = -1;
  222.    double Y[] = { -0.441, -0.781, 0.979, -0.911, 0.879, 0.807 };
  223.    int incY = -1;
  224.    double y_expected[] = { -0.902712, -0.524419, -0.307439, -2.167713, 1.059385, 1.104445 };
  225.    cblas_zhbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY);
  226.    {
  227.      int i;
  228.      for (i = 0; i < 3; i++) {
  229.        gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zhbmv(case 1094) real");
  230.        gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zhbmv(case 1094) imag");
  231.      };
  232.    };
  233.   };
  234.  
  235.  
  236.   {
  237.    int order = 101;
  238.    int uplo = 121;
  239.    double alpha[2] = {1, 0};
  240.    double beta[2] = {1, 0};
  241.    int N = 3;
  242.    int k = 1;
  243.    int lda = 3;
  244.    double A[] = { 0.662, 0.24, -0.311, -0.345, -0.782, 0.904, -0.842, 0.065, -0.168, -0.855, -0.692, 0.113, 0.009, -0.707, -0.981, 0.019, -0.687, 0.861 };
  245.    double X[] = { 0.873, -0.509, 0.398, 0.471, 0.214, 0.878 };
  246.    int incX = -1;
  247.    double Y[] = { -0.441, -0.781, 0.979, -0.911, 0.879, 0.807 };
  248.    int incY = -1;
  249.    double y_expected[] = { -0.902712, -0.524419, -0.307439, -2.167713, 1.059385, 1.104445 };
  250.    cblas_zhbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY);
  251.    {
  252.      int i;
  253.      for (i = 0; i < 3; i++) {
  254.        gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zhbmv(case 1095) real");
  255.        gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zhbmv(case 1095) imag");
  256.      };
  257.    };
  258.   };
  259.  
  260.  
  261.   {
  262.    int order = 101;
  263.    int uplo = 122;
  264.    double alpha[2] = {1, 0};
  265.    double beta[2] = {1, 0};
  266.    int N = 3;
  267.    int k = 1;
  268.    int lda = 3;
  269.    double A[] = { 0.662, 0.24, -0.311, -0.345, -0.782, 0.904, -0.842, 0.065, -0.168, -0.855, -0.692, 0.113, 0.009, -0.707, -0.981, 0.019, -0.687, 0.861 };
  270.    double X[] = { 0.873, -0.509, 0.398, 0.471, 0.214, 0.878 };
  271.    int incX = -1;
  272.    double Y[] = { -0.441, -0.781, 0.979, -0.911, 0.879, 0.807 };
  273.    int incY = -1;
  274.    double y_expected[] = { -0.960834, -0.558818, 1.042598, -1.102864, 0.507945, 0.11149 };
  275.    cblas_zhbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY);
  276.    {
  277.      int i;
  278.      for (i = 0; i < 3; i++) {
  279.        gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zhbmv(case 1096) real");
  280.        gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zhbmv(case 1096) imag");
  281.      };
  282.    };
  283.   };
  284.  
  285.  
  286.   {
  287.    int order = 101;
  288.    int uplo = 122;
  289.    double alpha[2] = {1, 0};
  290.    double beta[2] = {1, 0};
  291.    int N = 3;
  292.    int k = 1;
  293.    int lda = 3;
  294.    double A[] = { 0.662, 0.24, -0.311, -0.345, -0.782, 0.904, -0.842, 0.065, -0.168, -0.855, -0.692, 0.113, 0.009, -0.707, -0.981, 0.019, -0.687, 0.861 };
  295.    double X[] = { 0.873, -0.509, 0.398, 0.471, 0.214, 0.878 };
  296.    int incX = -1;
  297.    double Y[] = { -0.441, -0.781, 0.979, -0.911, 0.879, 0.807 };
  298.    int incY = -1;
  299.    double y_expected[] = { -0.960834, -0.558818, 1.042598, -1.102864, 0.507945, 0.11149 };
  300.    cblas_zhbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY);
  301.    {
  302.      int i;
  303.      for (i = 0; i < 3; i++) {
  304.        gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zhbmv(case 1097) real");
  305.        gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zhbmv(case 1097) imag");
  306.      };
  307.    };
  308.   };
  309.  
  310.  
  311.   {
  312.    int order = 102;
  313.    int uplo = 121;
  314.    double alpha[2] = {1, 0};
  315.    double beta[2] = {1, 0};
  316.    int N = 3;
  317.    int k = 1;
  318.    int lda = 3;
  319.    double A[] = { 0.662, 0.24, -0.311, -0.345, -0.782, 0.904, -0.842, 0.065, -0.168, -0.855, -0.692, 0.113, 0.009, -0.707, -0.981, 0.019, -0.687, 0.861 };
  320.    double X[] = { 0.873, -0.509, 0.398, 0.471, 0.214, 0.878 };
  321.    int incX = -1;
  322.    double Y[] = { -0.441, -0.781, 0.979, -0.911, 0.879, 0.807 };
  323.    int incY = -1;
  324.    double y_expected[] = { -1.626828, 0.003954, 0.437012, -2.365106, 0.446715, 0.16323 };
  325.    cblas_zhbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY);
  326.    {
  327.      int i;
  328.      for (i = 0; i < 3; i++) {
  329.        gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zhbmv(case 1098) real");
  330.        gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zhbmv(case 1098) imag");
  331.      };
  332.    };
  333.   };
  334.  
  335.  
  336.   {
  337.    int order = 102;
  338.    int uplo = 121;
  339.    double alpha[2] = {1, 0};
  340.    double beta[2] = {1, 0};
  341.    int N = 3;
  342.    int k = 1;
  343.    int lda = 3;
  344.    double A[] = { 0.662, 0.24, -0.311, -0.345, -0.782, 0.904, -0.842, 0.065, -0.168, -0.855, -0.692, 0.113, 0.009, -0.707, -0.981, 0.019, -0.687, 0.861 };
  345.    double X[] = { 0.873, -0.509, 0.398, 0.471, 0.214, 0.878 };
  346.    int incX = -1;
  347.    double Y[] = { -0.441, -0.781, 0.979, -0.911, 0.879, 0.807 };
  348.    int incY = -1;
  349.    double y_expected[] = { -1.626828, 0.003954, 0.437012, -2.365106, 0.446715, 0.16323 };
  350.    cblas_zhbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY);
  351.    {
  352.      int i;
  353.      for (i = 0; i < 3; i++) {
  354.        gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zhbmv(case 1099) real");
  355.        gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zhbmv(case 1099) imag");
  356.      };
  357.    };
  358.   };
  359.  
  360.  
  361.   {
  362.    int order = 102;
  363.    int uplo = 122;
  364.    double alpha[2] = {1, 0};
  365.    double beta[2] = {1, 0};
  366.    int N = 3;
  367.    int k = 1;
  368.    int lda = 3;
  369.    double A[] = { 0.662, 0.24, -0.311, -0.345, -0.782, 0.904, -0.842, 0.065, -0.168, -0.855, -0.692, 0.113, 0.009, -0.707, -0.981, 0.019, -0.687, 0.861 };
  370.    double X[] = { 0.873, -0.509, 0.398, 0.471, 0.214, 0.878 };
  371.    int incX = -1;
  372.    double Y[] = { -0.441, -0.781, 0.979, -0.911, 0.879, 0.807 };
  373.    int incY = -1;
  374.    double y_expected[] = { -0.097302, -1.204999, 1.168771, -0.822543, 0.734395, 1.379065 };
  375.    cblas_zhbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY);
  376.    {
  377.      int i;
  378.      for (i = 0; i < 3; i++) {
  379.        gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zhbmv(case 1100) real");
  380.        gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zhbmv(case 1100) imag");
  381.      };
  382.    };
  383.   };
  384.  
  385.  
  386.   {
  387.    int order = 102;
  388.    int uplo = 122;
  389.    double alpha[2] = {1, 0};
  390.    double beta[2] = {1, 0};
  391.    int N = 3;
  392.    int k = 1;
  393.    int lda = 3;
  394.    double A[] = { 0.662, 0.24, -0.311, -0.345, -0.782, 0.904, -0.842, 0.065, -0.168, -0.855, -0.692, 0.113, 0.009, -0.707, -0.981, 0.019, -0.687, 0.861 };
  395.    double X[] = { 0.873, -0.509, 0.398, 0.471, 0.214, 0.878 };
  396.    int incX = -1;
  397.    double Y[] = { -0.441, -0.781, 0.979, -0.911, 0.879, 0.807 };
  398.    int incY = -1;
  399.    double y_expected[] = { -0.097302, -1.204999, 1.168771, -0.822543, 0.734395, 1.379065 };
  400.    cblas_zhbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY);
  401.    {
  402.      int i;
  403.      for (i = 0; i < 3; i++) {
  404.        gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zhbmv(case 1101) real");
  405.        gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zhbmv(case 1101) imag");
  406.      };
  407.    };
  408.   };
  409.  
  410.  
  411. }
  412.